package common.project.epic.db;

import java.util.HashMap;

public class FileExtensionMap {
	private static FileExtensionMap mFEM;
	private HashMap<String, Integer> mExtensionToIndex;
	private HashMap<Integer, String> mIndexToExtension;
	
	private FileExtensionMap() {
		mExtensionToIndex = new HashMap<String, Integer>();
		mIndexToExtension = new HashMap<Integer, String>();
	}
	
	public boolean hasExtension(String extension) {
		if(extension!=null && extension.length()>0) {
			return mExtensionToIndex.containsKey(extension);
		}
		else {
			return false;
		}
	}
	
	public int getIndexFromExtension(String extension) {
		if(extension!=null && extension.length()>0) {
			return mExtensionToIndex.get(extension);
		}
		else {
			return -1;
		}
	}
	
	public String getExtensionFromIndex(int index) {
		return mIndexToExtension.get(index);
	}
	
	private void loadEntry(String extension, int index, boolean acceptedExtension) {
		if(acceptedExtension) {
			mExtensionToIndex.put(extension, index);
			mIndexToExtension.put(index, extension);
		}
	}

	public static FileExtensionMap getSingelton() {
		if(mFEM==null) {
			mFEM = new FileExtensionMap();

	    	mFEM.loadEntry("sxw", 0, true);
	    	mFEM.loadEntry("oda", 1, true);
	    	mFEM.loadEntry("ogg", 2, true);
	    	mFEM.loadEntry("pdf", 3, true);
	    	mFEM.loadEntry("rar", 4, true);
	    	mFEM.loadEntry("rss", 5, true);
	    	mFEM.loadEntry("zip", 6, true);
	    	mFEM.loadEntry("apk", 7, true);
	    	mFEM.loadEntry("sxg", 8, true);
	    	mFEM.loadEntry("stw", 9, true);
	    	mFEM.loadEntry("torrent", 10, true);
	    	mFEM.loadEntry("cdf", 11, true);
	    	mFEM.loadEntry("vcd", 12, true);
	    	mFEM.loadEntry("dir", 13, true);
	    	mFEM.loadEntry("dvi", 14, true);
	    	mFEM.loadEntry("flac", 15, true);
	    	mFEM.loadEntry("mm", 16, true);
	    	mFEM.loadEntry("gtar", 17, true);
	    	mFEM.loadEntry("tgz", 18, true);
	    	mFEM.loadEntry("taz", 19, true);
	    	mFEM.loadEntry("iso", 20, true);
	    	mFEM.loadEntry("latex", 21, true);
	    	mFEM.loadEntry("pac", 22, true);
	    	mFEM.loadEntry("swf", 23, true);
	    	mFEM.loadEntry("tar", 24, true);
	    	mFEM.loadEntry("texinfo", 25, true);
	    	mFEM.loadEntry("texi", 26, true);
	    	mFEM.loadEntry("man", 27, true);
	    	mFEM.loadEntry("src", 28, true);
	    	mFEM.loadEntry("m4v", 29, true);
	    	mFEM.loadEntry("xcf", 30, true);
	    	mFEM.loadEntry("fig", 31, true);
	    	mFEM.loadEntry("xhtml", 32, true);
	    	mFEM.loadEntry("3gpp", 33, true);
	    	mFEM.loadEntry("mid", 34, true);
	    	mFEM.loadEntry("midi", 35, true);
	    	mFEM.loadEntry("mpga", 36, true);
	    	mFEM.loadEntry("mpega", 37, true);
	    	mFEM.loadEntry("mp2", 38, true);
	    	mFEM.loadEntry("mp3", 39, true);
	    	mFEM.loadEntry("m4a", 40, true);
	    	mFEM.loadEntry("m3u", 41, true);
	    	mFEM.loadEntry("wma", 42, true);
	    	mFEM.loadEntry("ra", 43, true);
	    	mFEM.loadEntry("rm", 44, true);
	    	mFEM.loadEntry("ram", 45, true);
	    	mFEM.loadEntry("wav", 46, true);
	    	mFEM.loadEntry("bmp", 47, true);
	    	mFEM.loadEntry("gif", 48, true);
	    	mFEM.loadEntry("cur", 49, true);
	    	mFEM.loadEntry("ico", 50, true);
	    	mFEM.loadEntry("ief", 51, true);
	    	mFEM.loadEntry("jpeg", 52, true);
	    	mFEM.loadEntry("jpg", 53, true);
	    	mFEM.loadEntry("jpe", 54, true);
	    	mFEM.loadEntry("pcx", 56, true);
	    	mFEM.loadEntry("png", 57, true);
	    	mFEM.loadEntry("svg", 58, true);
	    	mFEM.loadEntry("svgz", 59, true);
	    	mFEM.loadEntry("tiff", 60, true);
	    	mFEM.loadEntry("tif", 61, true);
	    	mFEM.loadEntry("psd", 62, true);
	    	mFEM.loadEntry("rgb", 63, true);
	    	mFEM.loadEntry("xbm", 64, true);
	    	mFEM.loadEntry("xpm", 65, true);
	    	mFEM.loadEntry("xwd", 66, true);
	    	mFEM.loadEntry("ics", 67, true);
	    	mFEM.loadEntry("icz", 68, true);
	    	mFEM.loadEntry("csv", 69, true);
	    	mFEM.loadEntry("css", 70, true);
	    	mFEM.loadEntry("323", 71, true);
	    	mFEM.loadEntry("txt", 72, true);
	    	mFEM.loadEntry("asc", 73, true);
	    	mFEM.loadEntry("text", 74, true);
	    	mFEM.loadEntry("diff", 75, true);
	    	mFEM.loadEntry("rtx", 76, true);
	    	mFEM.loadEntry("rtf", 77, true);
	    	mFEM.loadEntry("ts", 78, true);;
	    	mFEM.loadEntry("bib", 79, true);
	    	mFEM.loadEntry("boo", 80, true);
	    	mFEM.loadEntry("h++", 81, true);
	    	mFEM.loadEntry("hpp", 82, true);
	    	mFEM.loadEntry("hxx", 83, true);
	    	mFEM.loadEntry("hh", 84, true);
	    	mFEM.loadEntry("c++", 85, true);
	    	mFEM.loadEntry("cpp", 86, true);
	    	mFEM.loadEntry("cxx", 87, true);
	    	mFEM.loadEntry("h", 88, true);;
	    	mFEM.loadEntry("csh", 89, true);
	    	mFEM.loadEntry("c", 90, true);
	    	mFEM.loadEntry("d", 91, true);
	    	mFEM.loadEntry("hs", 92, true);
	    	mFEM.loadEntry("java", 93, true);
	    	mFEM.loadEntry("etx", 94, true);
	    	mFEM.loadEntry("tcl", 95, true);
	    	mFEM.loadEntry("tex", 96, true);
	    	mFEM.loadEntry("ltx", 97, true);
	    	mFEM.loadEntry("vcf", 98, true);
	    	mFEM.loadEntry("3gp", 99, true);
	    	mFEM.loadEntry("3g2", 100, true);
	    	mFEM.loadEntry("fli", 101, true);
	    	mFEM.loadEntry("mpeg", 102, true);
	    	mFEM.loadEntry("mpg", 103, true);
	    	mFEM.loadEntry("mpe", 104, true);
	    	mFEM.loadEntry("mp4", 105, true);
	    	mFEM.loadEntry("VOB", 106, true);
	    	mFEM.loadEntry("qt", 107, true);
	    	mFEM.loadEntry("mov", 108, true);
	    	mFEM.loadEntry("mxu", 109, true);
	    	mFEM.loadEntry("asf", 110, true);
	    	mFEM.loadEntry("asx", 111, true);
	    	mFEM.loadEntry("wm", 112, true);
	    	mFEM.loadEntry("wmv", 113, true);
	    	mFEM.loadEntry("wmx", 114, true);
	    	mFEM.loadEntry("avi", 115, true);
	    	mFEM.loadEntry("movie", 116, true);
		}
		return mFEM;
	}
}
